package com.ruoyi.course.service;

import java.util.List;
import com.ruoyi.course.domain.CourseRecord;
import com.ruoyi.course.domain.CourseUserList;

/**
 * 课程的上课记录Service接口
 * 
 * @author Weiney
 * @date 2025-02-26
 */
public interface ICourseRecordService 
{
    /**
     * 根据课程ID查询正在上课的记录状态
     * @param courseId 课程ID
     * @return 是否已选课：true 已选；false 未选
     */
    boolean getStartCourseStatus(Long courseId);

    /**
     * 根据课程ID查询正在上课的记录
     * @param courseId 课程ID
     * @return CourseRecord
     */
    public CourseRecord getStartCourseRecordByCourseId(Long courseId);

    /**
     * 查询课程的上课记录
     * 
     * @param id 课程的上课记录主键
     * @return 课程的上课记录
     */
    public CourseRecord selectCourseRecordById(Long id);

    /**
     * 根据课程ID查询正在上课的记录
     * @param courseId 课程ID
     * @return 上课记录
     */
    public CourseRecord selectCourseRecordByCourseIdAndStatus(Long courseId);

    /**
     * 查询课程的上课记录列表
     * 
     * @param courseRecord 课程的上课记录
     * @return 课程的上课记录集合
     */
    public List<CourseRecord> selectCourseRecordList(CourseRecord courseRecord);

    /**
     * 新增课程的上课记录
     * 
     * @param courseRecord 课程的上课记录
     * @return 结果
     */
    public int insertCourseRecord(CourseRecord courseRecord);

    /**
     * 修改课程的上课记录
     * 
     * @param courseRecord 课程的上课记录
     * @return 结果
     */
    public int updateCourseRecord(CourseRecord courseRecord);

    /**
     * 批量删除课程的上课记录
     * 
     * @param ids 需要删除的课程的上课记录主键集合
     * @return 结果
     */
    public int deleteCourseRecordByIds(Long[] ids);

    /**
     * 删除课程的上课记录信息
     * 
     * @param id 课程的上课记录主键
     * @return 结果
     */
    public int deleteCourseRecordById(Long id);

    /**
     * 查询课程学生列表
     *
     * @param courseId 课程学生列表主键
     * @return 课程学生列表
     */
    public CourseUserList selectCourseUserListByCourseId(Long courseId);

    /**
     * 查询课程学生列表列表
     *
     * @param courseUserList 课程学生列表
     * @return 课程学生列表集合
     */
    public List<CourseUserList> selectCourseUserListList(CourseUserList courseUserList);

    /**
     * 新增课程学生列表
     *
     * @param courseUserList 课程学生列表
     * @return 结果
     */
    public int insertCourseUserList(CourseUserList courseUserList);

    /**
     * 修改课程学生列表
     *
     * @param courseUserList 课程学生列表
     * @return 结果
     */
    public int updateCourseUserList(CourseUserList courseUserList);

    /**
     * 批量删除学生列表信息
     * @param courseId
     * @param userIds
     * @return
     */
    public int deleteCourseUserListByCourseIds(Long courseId, List<Long> userIds);

    /**
     * 删除课程学生列表信息
     *
     * @param courseId 课程学生列表主键
     * @return 结果
     */
    public int deleteCourseUserListByCourseId(Long courseId);
}
